ASHPD
ASHPD, acronym of Aperture Science Handheld Portal Device is a Rust & zbus wrapper of the XDG portals DBus interfaces. The library aims to provide an easy way to interact with the various portals defined per the specifications. It provides an alternative to the C library https://github.com/flatpak/libportal
Examples
Ask the compositor to pick a color
use ScreenshotProxy;
use WindowIdentifier;
async
Start a PipeWire stream from the user's camera
use CameraProxy;
pub async
Optional features
Feature | Description |
---|---|
log | Record various debug information using the tracing library |
tokio_runtime | Enable tokio runtime on zbus dependency |
feature_gtk3 | Implement From<Color> for gdk3::RGBA |
Provides WindowIdentifier::from_window that takes a IsA<gdk3::Window> |
|
feature_gtk4 | Implement From<Color> for gdk4::RGBA |
Provides WindowIdentifier::from_native that takes a IsA<gtk4::Native> |
|
feature_pipewire | Provides ashpd::desktop::camera::pipewire_node_id that helps you retrieve the PipeWire Node ID to use with the file descriptor returned by the camera portal |
raw_handle | Provides WindowIdentifier::from_raw_handle and WindowIdentifier::as_raw_handle for raw-window-handle crate |
wayland | Provides WindowIdentifier::from_wayland for wayland-client crate |
Demo
The library comes with a demo built using the GTK 4 Rust bindings and previews most of the portals. It is meant as a test case for the portals (from a distributor perspective) and as a way for the developers to see which portals exists and how to integrate them into their application using ASHPD.